package com.aizuda.boot.modules.flw.service;

import com.aizuda.boot.modules.business.contract.entity.dto.WorkflowModuleDTO;
import com.aizuda.boot.modules.flw.entity.FlwFormTemplate;
import com.aizuda.boot.modules.flw.entity.vo.FlwFormTemplateDetailVO;
import com.aizuda.service.service.IBaseService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.validation.constraints.NotEmpty;

import java.util.List;

/**
 * 流程表单模板 服务类
 *
 * @author hubin
 * @since 2024-05-19
 */
public interface IFlwFormTemplateService extends IBaseService<FlwFormTemplate> {

    Page<FlwFormTemplate> page(Page<FlwFormTemplate> page, FlwFormTemplate flwFormTemplate);

    Page<FlwFormTemplate> pageSimple(Page<FlwFormTemplate> page, FlwFormTemplate flwFormTemplate);

    boolean existByFormCategoryIds(List<Long> formCategoryIds);

    /**
     * 删除非绑定表单模板
     */
    boolean removeNotBindByIds(List<Long> ids);

    /**
     * 根据流程表单配置查询
     *
     * @param configureProcessForm 流程表单配置
     */
    FlwFormTemplate getByConfigure(String configureProcessForm);

    /**
     * 修改流程表单状态
     */
    boolean updateStatusById(Long id, Integer status);

    /**
     * 新增表单模版
     * @param flwFormTemplate
     * @return
     */
    Long saveNew(FlwFormTemplate flwFormTemplate);

    /**
     * 删除非绑定表单模板_新
     * @param ids
     * @return
     */
    boolean removeNotBindByIdsNew(@NotEmpty List<Long> ids);

    /**
     * 查询表单模版_新
     * @param id
     * @return
     */
    FlwFormTemplateDetailVO getByIdNew(Long id);

    /**
     * 修改表单模版_新
     * @param flwFormTemplate
     * @return
     */
    boolean updateByIdNew(FlwFormTemplateDetailVO flwFormTemplate);

    /**
     * 添加流程模块关联
     * @param workflowModuleDTO
     * @return
     */
    boolean addWorkflowModules(WorkflowModuleDTO workflowModuleDTO);

    /**
     * 删除流程模块关联
     * @param workflowModuleDTO
     * @return
     */
    boolean deleteWorkflowModules(WorkflowModuleDTO workflowModuleDTO);
}
